home *** CD-ROM | disk | FTP | other *** search
- /*
- File: PreviewPICS.r
-
- Written by: Peter Hoddie
-
- Copyright: © 1992 by Apple Computer, Inc., all rights reserved.
-
- */
-
- #include <Aliases.h>
- #include <Errors.h>
- #include <QuickDraw.h>
- #include <Resources.h>
-
- #include <Components.h>
- #include <QuickTimeComponents.h>
-
- typedef struct {
- ComponentInstance self;
- } PICSPreviewRecord, **PICSPreviewGlobals;
-
- pascal ComponentResult PICSPreviewDispatch( ComponentParameters *params, Handle store );
- pascal ComponentResult PICSPreviewOpen(PICSPreviewGlobals store, ComponentInstance self);
- pascal ComponentResult PICSPreviewClose(PICSPreviewGlobals store, ComponentInstance self);
- pascal ComponentResult PICSPreviewCanDo( PICSPreviewGlobals store, short ftnNumber );
- pascal ComponentResult PICSPreviewVersion( PICSPreviewGlobals store );
- pascal ComponentResult PICSPreviewShowData(PICSPreviewGlobals store, OSType dataType,
- Handle data, const Rect *inHere);
-
- // entry point for all Component Manager requests
- pascal ComponentResult PICSPreviewDispatch( ComponentParameters *params, Handle store )
- {
- OSErr err = badComponentSelector;
- ComponentFunction componentProc = 0;
-
- switch (params->what) {
- case kComponentOpenSelect: componentProc = PICSPreviewOpen; break;
- case kComponentCloseSelect: componentProc = PICSPreviewClose; break;
- case kComponentCanDoSelect: componentProc = PICSPreviewCanDo; break;
- case kComponentVersionSelect: componentProc = PICSPreviewVersion; break;
- case kPreviewShowDataSelector: componentProc = PICSPreviewShowData; break;
- }
-
- if (componentProc)
- err = CallComponentFunctionWithStorage(store, params, componentProc);
-
- return err;
- }
-
- pascal ComponentResult PICSPreviewCanDo( PICSPreviewGlobals store, short ftnNumber )
- {
- switch (ftnNumber) {
- case kComponentOpenSelect:
- case kComponentCloseSelect:
- case kComponentCanDoSelect:
- case kComponentVersionSelect:
- case kPreviewShowDataSelector:
- return true;
- default:
- return false;
- }
- }
-
- pascal ComponentResult PICSPreviewVersion( PICSPreviewGlobals store )
- {
- return 0x00010001;
- }
-
- pascal ComponentResult PICSPreviewOpen(PICSPreviewGlobals store, ComponentInstance self)
- {
- store = (PICSPreviewGlobals)NewHandle(sizeof(PICSPreviewRecord));
- if (!store) return MemError();
- SetComponentInstanceStorage(self, (Handle)store);
- (**store).self = self;
-
- return noErr;
- }
-
- pascal ComponentResult PICSPreviewClose(PICSPreviewGlobals store, ComponentInstance self)
- {
- if (store) DisposeHandle((Handle)store);
- return noErr;
- }
-
- pascal ComponentResult PICSPreviewShowData(PICSPreviewGlobals store, OSType dataType,
- Handle data, const Rect *inHere)
- {
- OSErr err = noErr;
- short resRef = 0, saveRes = CurResFile();
- FSSpec theFile;
- Boolean whoCares;
- Handle thePict = nil;
- ComponentInstance ci;
-
- // because our Component has the pnotComponentNeedsNoCache flag set, we should
- // only be called to display files.
- if (dataType != rAliasType)
- return paramErr;
-
- // open up the file to preview
- if (err = ResolveAlias(nil, (AliasHandle)data, &theFile, &whoCares)) goto bail;
- resRef = FSpOpenResFile(&theFile, fsRdPerm);
- if (err = ResError()) goto bail;
-
- // get the first PICT
- UseResFile(resRef);
- thePict = Get1IndResource('PICT', 1);
- if (!thePict) goto bail;
-
- // use the PICT Preview Component to display the preview
- if (ci = OpenDefaultComponent(ShowFilePreviewComponentType, 'PICT')) {
- PreviewShowData(ci, 'PICT', thePict, inHere);
- CloseComponent(ci);
- }
-
- bail:
- if (resRef) CloseResFile(resRef);
- UseResFile(saveRes);
- return err;
- }
-
-
-